package demo

import (
	"fmt"
	"os"
	"io"
	"io/ioutil"
	"bufio"
	"reflect"
	"errors"
)

func UploadImg(filePath string) (file *os.File, err error){
	file, err = os.Open(filePath)
	if err != nil {
		fmt.Println("打开文件出错，错误为", err)
	}

	defer file.Close()

	fmt.Printf("文件=%v", file)

	return file,nil
}

func OpenFile(filePath string) (string) {
	content,err := ioutil.ReadFile(filePath)

	if err != nil {
		fmt.Println("读取文件出错")
	}

	// fmt.Printf("%v", string(content))

	return string(content)
}

func ReadFileContent(filePath string) (error) {
	// 打开文件
	file, err := os.Open(filePath)
	if err != nil {
		fmt.Printf("文件读取失败")
	}
	defer file.Close()
	// 创建一个流
	reader := bufio.NewReader(file)
	for {
		// 读到换行结束
		str, err := reader.ReadString('\n')
		// 读完文件跳出循环
		if err == io.EOF {
			break
		}
		fmt.Println(str)
	}
	fmt.Println("文件全部读取完毕")

	// scanner := bufio.NewScanner(file)
	// for scanner.Scan() {
	// 	log.Println(scanner.Text()) // 逐行读取并打印
	// }

	return nil
}

func WriteFileContent(filePath string) (error) {

	file, err := os.OpenFile(filePath, os.O_RDWR | os.O_APPEND | os.O_CREATE, 0666)
	if err != nil {
		fmt.Println("文件打开失败")
		return errors.New("文件打开失败")
	}
	
	fmt.Println(reflect.TypeOf(file))
  defer file.Close()
	// 使用文件的流
	writer := bufio.NewWriter(file)
	writer.WriteString("皇皇你好，我是哈士咪")
	writer.Flush()
  
	fmt.Println(reflect.TypeOf(writer))

	return nil
}

func CopyFile(filePath1 string, filePath2 string) error {

	originFile, err := ioutil.ReadFile(filePath1)
	if err != nil {
		fmt.Println("读取文件出错")
	}

	ioutil.WriterFile(filePath2, originFile, 0666)
	if err != nil {
		fmt.Println("写入文件失败")
	}

	return nil
}